package com.ehome.poct.core.api.virtual;

import com.ehome.core.page.Page;
import com.ehome.core.service.CrudService;
import com.ehome.poct.core.api.dto.DelReportDTO;
import com.ehome.poct.core.api.dto.ReportListDTO;
import com.ehome.poct.core.api.dto.check.BldCheckReportVO;
import com.ehome.poct.core.api.dto.check.CheckReportDTO;
import com.ehome.poct.core.api.dto.check.ProjectNameReportDTO;
import com.ehome.poct.core.api.dto.check.ReportDTO;
import com.ehome.poct.core.api.dto.report.ReportRequestDTO;
import com.ehome.poct.core.api.dto.report.TestReportConfigDTO;
import com.ehome.poct.core.api.vo.CheckReportVO;
import com.ehome.poct.core.api.vo.ReportDetailVO;
import com.ehome.poct.core.api.vo.ReportDtlVO;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;


/**
 * @description:
 * @author: muqiu
 * @time: 2022/3/3 10:19
 */
public interface ReportService extends CrudService<CheckReportDTO> {

    /**
     * 检测集合
     * @param dto
     * @return
     */
    Page<CheckReportVO> getCheckList(ReportListDTO dto);

    /**
     * 根据订单查询报告详情
     * @param orderNo
     * @return
     */
    ReportDetailVO getCheckReportByOrderNo(String orderNo);

    /**
     * 根据报告ID查询报告详情
     * @param reportId
     * @return
     */
    ReportDetailVO getCheckReport(Long reportId);

    /**
     * 删除金标仪
     * @param delReportDTO
     * @return
     */
    void delJby(DelReportDTO delReportDTO);

    /**
     * 删除血常规报告
     * @param id
     */
    void delBld(Long id);

    /**
     * 金标仪单项检测详情
     * @param id
     * @return
     */
    ReportDtlVO getSingleOne(Long id);

    BldCheckReportVO createByDataId(Long dataId, String orderNo,Boolean isPay);

    /**
     * 金标仪联合检测详情
     * @param id
     * @return
     */
    ReportDtlVO getUnionOne(Long id);

    /**
     * 血常规免支付下单后更改金标仪报告状态
     * @param orderNo
     */
    void updateOrderStatus(String orderNo);

    /**
     * 报告组成
     * @param reportRequestDTO
     * @return
     */
    void createReport(ReportRequestDTO reportRequestDTO);

    List<ReportDTO> getSummaryJby(String orderNo);

    void reportConfigJby(TestReportConfigDTO testReportConfigDTO);

    void reportConfigBld(TestReportConfigDTO testReportConfigDTO);


    List<ReportDTO> simpleReportList(String orderNo);

    List<ProjectNameReportDTO> projectNameList(List<String> orderNos);
}
